using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace TestImport.Bestellingen
{
    public partial class IndividueleBestelling : Form
    {
        private string vgroepCode;
        private int vBoeklijstID;
        private int vLeerlingID;
        private DataView dv, dv1,dv2, dv3;
        private bool isIndirect = false;
        private string filterTekst = "";
        private string leerlingInfo = "";
        private GroepBestelling owner = null;
        private bool isNieuweLeerling = false;
        private DataGridViewCellStyle dataGridViewCellStyle = new DataGridViewCellStyle();

        public IndividueleBestelling()
        {
            InitializeComponent();
            this.BackColor = InstParameters.Default.schermkleur;
        }

        public IndividueleBestelling(string groepCode, int leerlingID, string leerlinginfo, GroepBestelling owner)
        {
            InitializeComponent();
            this.BackColor = InstParameters.Default.schermkleur;
            vgroepCode = groepCode;
            vLeerlingID = leerlingID;
            this.leerlingInfo = leerlinginfo;
            this.owner = owner;
            pnlLeerlingID.Enabled = false;
            isIndirect = true;
            toonLeerlingLabel();
           
        }

        private void IndividueleBestelling_Load(object sender, EventArgs e)
        {

            dataGridViewCellStyle.ForeColor = System.Drawing.Color.Red;

            this.boekTableAdapter.FillByIsInBoeklijst(this.onsBoekenPakketDataSet.Boek);
            this.boeklijstTableAdapter.Fill(this.onsBoekenPakketDataSet.Boeklijst);
            this.groepTableAdapter.Fill(this.onsBoekenPakketDataSet.Groep);
            this.leerlingTableAdapter.Fill(this.onsBoekenPakketDataSet.Leerling);
            
            dv = leerlingBindingSource.List as DataView;
            dv1 = leerlingBindingSource1.List as DataView;
            dv2 = boeklijstBindingSource.List as DataView;
            dv3 = leerlingBoekBestellingBindingSource.List as DataView;

            chkBestelInfo.Checked = true;
            chkAnnulatieInfo.Checked = false;
            chkAfhaalInfo.Checked = false;
            chkRetourInfo.Checked = false;
            cmbFilter.SelectedIndex = 0;
            cmbGroep_SelectedIndexChanged(null, null);

            if (isIndirect) { vernieuwLijst(); toonLeerlingLabel(); }
            else cmbStudent_SelectedIndexChanged(null, null);
           
            for (int i = 0; i < leerlingBoekBestellingDataGridView.Rows.Count; i++)
            {
                try
                {
                    if (int.Parse(leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvStatus"].Value.ToString()) > 0)//;//(int)Bestelling.LLBoekStatus.BesteldLL);
                    {
                        leerlingBoekBestellingDataGridView.Rows[i].ReadOnly = true;
                        leerlingBoekBestellingDataGridView.Rows[i].DefaultCellStyle = dataGridViewCellStyle;
                    }
                }
                catch (Exception ex) {  }
            }
        }

        private void cmbGroep_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                string vgroep = cmbGroep.SelectedValue.ToString();
                leerlingBindingSource1.RemoveFilter();
                leerlingBindingSource1.Filter = "groepCode = " + "'" + vgroep + "'";
            }
            catch (Exception ex) { ;}
        }

        private void cmbStudent_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                //wegschrijven bestellngen vorige student
                if (isNieuweLeerling) registreerBestelling();
                isNieuweLeerling = true;
                //
                int index = cmbStudent.SelectedIndex;
                vgroepCode = dv[index]["groepCode"].ToString();
                vLeerlingID = int.Parse(dv[index]["leerlingID"].ToString());
                leerlingInfo = dv[index]["naam"].ToString();
                vernieuwLijst();
                toonLeerlingLabel();
            }
            catch (Exception ex) { ;}
        }

        private void cmbStudentGroep_SelectedIndexChanged(object sender, EventArgs e)
        {
            //wegschrijven bestellngen vorige student
            if (isNieuweLeerling) registreerBestelling();
            isNieuweLeerling = true;
            //
            int index = cmbStudentGroep.SelectedIndex;
            vgroepCode = cmbGroep.SelectedValue.ToString();
            vLeerlingID = int.Parse(cmbStudentGroep.SelectedValue.ToString());
            leerlingInfo = dv1[cmbStudentGroep.SelectedIndex]["naam"].ToString();
            vernieuwLijst();
            toonLeerlingLabel();
            
        }

        private void chkAnnulatieInfo_CheckedChanged(object sender, EventArgs e)
        {
            dgvAnnulatie.Visible = !dgvAnnulatie.Visible;
        }

        private void chkBestelInfo_CheckedChanged(object sender, EventArgs e)
        {
            dgvBestelling.Visible = !dgvBestelling.Visible;
        }

        private void chkAfhaalInfo_CheckedChanged(object sender, EventArgs e)
        {
            dgvAfhaling.Visible = !dgvAfhaling.Visible;
        }

        private void chkRetourInfo_CheckedChanged(object sender, EventArgs e)
        {
            dgvRetour.Visible = !dgvRetour.Visible;
        }

        private void vernieuwLijst()
        {
            
            int nr = 0;
            int plaats = boeklijstBindingSource.Find("groepCode", vgroepCode);
            //Text += "test " + plaats + " lengte "+boeklijstBindingSource.Count+" ";
            vBoeklijstID = -1;
            
            if (plaats > -1)
            {
                vBoeklijstID = int.Parse(dv2[plaats]["boeklijstID"].ToString());
                //Text += "plaats " + vBoeklijstID;
                //reeds bestelde boeken ophalen
                this.leerlingBoekBestellingTableAdapter.FillByLeerlingID(this.onsBoekenPakketDataSet.LeerlingBoekBestelling, vLeerlingID);
                //overige boeken uit boekenlijst toevoegen
                DataTable t = boeklijstItemTableAdapter.GetBoekenNietInBoekLeerling(vBoeklijstID, vLeerlingID);
                for (int i = 0; i < t.Rows.Count; i++)
                {

                    dv3.AddNew();
                    nr = dv3.Count - 1;
                    dv3[nr]["boekID"] = (int)t.Rows[i]["boekID"];
                    dv3[nr]["boeksoortCode"] = t.Rows[i]["boeksoortCode"].ToString();
                    dv3[nr]["categorieCode"] = t.Rows[i]["categorieCode"].ToString();
                    dv3[nr]["boeklijstItemID"] = (int)t.Rows[i]["boeklijstItemID"];
                }
                try
                {
                    dv3.AddNew(); //Dummy rij voor goede sortering
                    leerlingBoekBestellingBindingSource.EndEdit();
                    leerlingBoekBestellingBindingSource.Sort = "categorieCode";
                    leerlingBoekBestellingBindingSource.EndEdit();
                    // dummy rij weg
                    nr = dv3.Count - 1;
                    dv3.Delete(nr);
                }
                catch (Exception ex) { ;}
                leerlingBoekBestellingDataGridView_Sorted(null, null);
            }
            else
            {
                int aantal = leerlingBoekBestellingDataGridView.Rows.Count;
                try
                {
                    for (int i = 0; i < aantal; i++)
                        leerlingBoekBestellingDataGridView.Rows.RemoveAt(0);
                }
                catch (Exception ex) { ;}
            }

           
            for (int i = 0; i < leerlingBoekBestellingDataGridView.Rows.Count; i++)
            {
                try
                {
                    if (int.Parse(leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvStatus"].Value.ToString()) > 0)//;//(int)Bestelling.LLBoekStatus.BesteldLL);
                    {
                        leerlingBoekBestellingDataGridView.Rows[i].ReadOnly = true;
                        leerlingBoekBestellingDataGridView.Rows[i].DefaultCellStyle = dataGridViewCellStyle;
                    }
                }
                catch (Exception ex) {}
            }
          
        }

        private void leerlingBoekBestellingDataGridView_Sorted(object sender, EventArgs e)
        {
            //anders zijn na sortering volgnr en selectie weg
            for (int i = 0; i < leerlingBoekBestellingDataGridView.Rows.Count; i++)
            {
                leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvVolgnr"].Value = i + 1;
                if (leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvStatus"].Value.Equals(DBNull.Value))
                    leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvSelecteer"].Value = false;
                if (!leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvStatus"].Value.Equals(DBNull.Value))
                    leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvSelecteer"].Value = true;
            }
        }

        private void leerlingBoekBestellingDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                leerlingBoekBestellingDataGridView.EndEdit();    
                int index = e.ColumnIndex;
                int rij = e.RowIndex;
                //Text = leerlingBoekBestellingDataGridView.Columns[index].Name;
                if (leerlingBoekBestellingDataGridView.Columns[index].Name.Equals("dgvSelecteer"))
                {
                    //Text = " "+int.Parse(leerlingBoekBestellingDataGridView.CurrentRow.Cells["dgvStatus"].Value.ToString());
                    if (leerlingBoekBestellingDataGridView.CurrentRow.Cells["dgvStatus"].Value == DBNull.Value ||
                        int.Parse(leerlingBoekBestellingDataGridView.CurrentRow.Cells["dgvStatus"].Value.ToString()) <= 0)// ;//(int)Bestelling.LLBoekStatus.BesteldLL);
                    {
                        //Text += "Bingo " + leerlingBoekBestellingDataGridView.CurrentRow.Cells["dgvSelecteer"].Value.ToString();

                        if (leerlingBoekBestellingDataGridView.CurrentRow.Cells["dgvSelecteer"].Value.ToString().ToUpper().Equals("TRUE"))
                        {
                            //Text += "Oeps "+rij+" rij";
                            //int index = leerlingDataGridView.CurrentRow.Index;

                            DataRow dr = leerlingBoekBestellingDataGridView.CurrentRow.DataBoundItem as DataRow;
                            //DataRow dr = onsBoekenPakketDataSet.Tables["LeerlingBoekBestelling"].Rows[rij];
                            //Text += dr["leerlingID"].ToString() + "     dada " + rij + " " + dr["datumBestelling", DataRowVersion.Original].ToString();
                            //if (dr["datumBestelling", DataRowVersion.Original] == DBNull.Value)
                            //    leerlingBoekBestellingDataGridView.CurrentRow.Cells["dgvBestelling"].Value = DateTime.Now;
                            //else
                            //    leerlingBoekBestellingDataGridView.CurrentRow.Cells["dgvBestelling"].Value = dr["datumBestelling", DataRowVersion.Original];





                            leerlingBoekBestellingDataGridView.CurrentRow.Cells["dgvBestelling"].Value = DateTime.Now;
                            leerlingBoekBestellingDataGridView.CurrentRow.Cells["dgvStatus"].Value = (int)Bestelling.LLBoekStatus.BesteldLL;
                        }
                        else
                        {
                            leerlingBoekBestellingDataGridView.CurrentRow.Cells["dgvBestelling"].Value = DBNull.Value;
                            leerlingBoekBestellingDataGridView.CurrentRow.Cells["dgvStatus"].Value = DBNull.Value;
                        }
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message);}
        }

        private void cmbFilter_SelectedIndexChanged(object sender, EventArgs e)
        {
            filterTekst = "Alle lijnen";
            string filter = "status = ";
            leerlingBoekBestellingBindingSource.RemoveFilter();
            switch (cmbFilter.SelectedItem.ToString().ToUpper()){
                    
                case "ALLE LIJNEN": { filterTekst = "Alle lijnen";  break; }
                case "BESTELLINGEN": { filterTekst = "Bestellingen"; filter += "'" + (int)Bestelling.LLBoekStatus.BesteldLL + "'";
                                       leerlingBoekBestellingBindingSource.Filter = filter; break; }
                case "ANNULATIES": { filterTekst = "Annulaties"; filter += "'" + (int)Bestelling.LLBoekStatus.Geannuleerd + "'";
                                       leerlingBoekBestellingBindingSource.Filter = filter; break; } 
                case "AFHALINGEN": { filterTekst = "Afhalingen"; filter += "'" + (int)Bestelling.LLBoekStatus.Afgehaald + "'";
                                       leerlingBoekBestellingBindingSource.Filter = filter; break; } 
                case "RETOURS": { filterTekst = "Retours"; filter += "'" + (int)Bestelling.LLBoekStatus.Geretourneerd + "'";
                                       leerlingBoekBestellingBindingSource.Filter = filter; break; } 
                
            }
            leerlingBoekBestellingDataGridView_Sorted(null, null);
            toonLeerlingLabel();
        }

        private void toonLeerlingLabel()
        {
            lblStudent.Text = "Overzicht voor " + leerlingInfo + " (" + vgroepCode + ") " + "\r\n"+"Filter: " + filterTekst;
        }

        private void registreerBestelling()
        {
            leerlingBoekBestellingBindingSource.RemoveFilter();
            DateTime tijd = DateTime.Now;
            BestellingEenLeerling bl = null;
            int vboekID = 0;
            int vboeklijstItemID = 0;
            int vleerlingBoekID = 0;
            
            for (int i = 0; i < leerlingBoekBestellingDataGridView.Rows.Count; i++)
            {
                try
                {
                    if (leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvSelecteer"].Value.ToString().ToUpper().Equals("TRUE"))
                    {
                        //indien boeklijstID = null -> nieuwe bestelling
                        if (leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvLeerlingBoekID"].Value.Equals(DBNull.Value))
                        {
                            tijd = DateTime.Now;
                            bl = new BestellingEenLeerling(vLeerlingID, vBoeklijstID, tijd);
                            vboekID = int.Parse(leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvBoekID"].Value.ToString());
                            vboeklijstItemID = int.Parse(leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvBoeklijstItemID"].Value.ToString());
                            bl.verwerkBestelling(vboekID, vboeklijstItemID, true);
                        }
                    }
                    else
                    {
                        //indien boeklijstID != null -> bestaande bestelling wissen
                        if (!leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvLeerlingBoekID"].Value.Equals(DBNull.Value))
                        {
                            bl = new BestellingEenLeerling();
                            vleerlingBoekID = int.Parse(leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvLeerlingBoekID"].Value.ToString());
                            bl.wisBestellingenVoorLeerling(vleerlingBoekID);
                        }
                    }
                }
                catch (Exception) { }
            }
        }

        private void IndividueleBestelling_FormClosed(object sender, FormClosedEventArgs e)
        {
            registreerBestelling();
            if (isIndirect) owner.updateAantalKolom();
        }

        private void btnXAllesAan_Click(object sender, EventArgs e)
        {
            /*leerlingBoekBestellingBindingSource.RemoveFilter();
            leerlingBoekBestellingDataGridView_Sorted(null, null);
            toonLeerlingLabel();*/
            leerlingBoekBestellingDataGridView.EndEdit(); 
            for (int i = 0; i < leerlingBoekBestellingDataGridView.Rows.Count; i++)
            {
                if ( leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvStatus"].Value == DBNull.Value ||
                     int.Parse(leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvStatus"].Value.ToString()) <= 0)
                {
                    if (leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvSelecteer"].Value.ToString().ToUpper().Equals("FALSE"))
                    {
                        leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvBestelling"].Value = DateTime.Now;
                        leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvStatus"].Value = (int)Bestelling.LLBoekStatus.BesteldLL;
                        leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvSelecteer"].Value = true;
                        leerlingBoekBestellingDataGridView.EndEdit();
                    }
                }
            }
            leerlingBoekBestellingDataGridView.EndEdit();
            
        }

        private void btnXAllesUit_Click(object sender, EventArgs e)
        {
            /*leerlingBoekBestellingBindingSource.RemoveFilter();
            leerlingBoekBestellingDataGridView_Sorted(null, null);
            toonLeerlingLabel();*/
            leerlingBoekBestellingDataGridView.EndEdit(); 
            for (int i = 0; i < leerlingBoekBestellingDataGridView.Rows.Count; i++)
            {
                if (leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvStatus"].Value == DBNull.Value ||
                    int.Parse(leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvStatus"].Value.ToString()) <= 0)
                {
                    if (leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvSelecteer"].Value.ToString().ToUpper().Equals("TRUE"))
                    {
                        leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvBestelling"].Value = DBNull.Value;
                        leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvStatus"].Value = DBNull.Value;
                        leerlingBoekBestellingDataGridView.Rows[i].Cells["dgvSelecteer"].Value = false;
                        leerlingBoekBestellingDataGridView.EndEdit();
                    }
                }
            }
            leerlingBoekBestellingDataGridView.EndEdit();
            
        }

        private void leerlingBoekBestellingDataGridView_DataError(object sender, DataGridViewDataErrorEventArgs e)
        {
            //Dummy - laten staan
        }
        
    }
}